package cockpit.desarrollo.SERVICE;

import java.sql.SQLException;
import java.util.ArrayList;

import cockpit.comm.DTO.DatosException;
import cockpit.comm.DTO.UsuarioDTO;
import cockpit.desarrollo.DAO.InfoCuentaDAO;
import cockpit.desarrollo.DAO.InfoVendedorDAO;
import cockpit.desarrollo.DAO.UsuarioDAO;


public class UsuarioSERVICE
{
    private static UsuarioDAO dao;

    private static UsuarioDAO getDAO( )
    {
        if( dao == null )
        {
            dao = new UsuarioDAO( );
        }
        return dao;
    }

    
    public UsuarioDTO getUsuarioPasswordEmail(String email,String password) throws SQLException, DatosException{
        return getDAO( ).getUsuarioPasswordEmail( email, password );
    }
    
    public static void createBasicUSer(String email, String password) throws DatosException, SQLException{
        getDAO( ).AgregarUsuarioBasic( email, password );
    }
    
    public static void cambiarEmail(String emailini, String emailfinal) throws DatosException{
        getDAO( ).cambiarEmail( emailini, emailfinal );
    }
    
    public static ArrayList<UsuarioDTO> getUsersEmail(String email) throws DatosException, SQLException{
        return getDAO( ).getUsuariosEmail( email );
    }
    
    public static ArrayList<UsuarioDTO> getUsersEmailLike(String email) throws DatosException, SQLException{
        return getDAO( ).getUsuariosEmailLike( email );
    }
    
    public static void eliminarUsuario(String email) throws DatosException, SQLException{
        getDAO( ).eliminarUsuario( email );
    }
    
    /**
     * 
     * @param email
     * @param password
     * @return
     * @throws SQLException
     * @throws DatosException
     */
    public static boolean existeEmailPass(String email,String password) throws SQLException, DatosException{
        return getDAO( ).existePasswordEmail( email, password );        
    }
    
    /**
     * @param prmEmail
     * @param prmPassword
     * @param prmLastLogin
     * @param prmNombre
     * @param prmApellido
     * @param prmDireccion
     * @param prmTelefono
     * @param prmNumeroIdentificacion
     * @param prmRegion
     * @param prmCelular
     * @param prmPaginaWeb
     * @param prmTwitter
     * @param prmFacebook
     * @param prmBiografia
     * @param prmIdBanco
     * @param prmIdTipoCuenta
     * @param prmNumCuenta
     * @param prmIdPais
     * @param prmTipoId
     * @return
     * @throws DatosException
     */
    public static long crearUsuarioVendedor(String prmEmail, String prmPassword, String prmLastLogin, String prmNombre, 
            String prmApellido, String prmDireccion, String prmTelefono, int prmNumeroIdentificacion, String prmRegion, 
            String prmCelular, String prmPaginaWeb, String prmTwitter, String prmFacebook, String prmBiografia, 
            long prmIdBanco ,long prmIdTipoCuenta, int prmNumCuenta , int prmIdPais, int prmTipoId )throws DatosException
    {
        
        InfoCuentaDAO infocuentaBD = new InfoCuentaDAO( );
        InfoVendedorDAO infoVendedorBD = new InfoVendedorDAO( );
        UsuarioDAO usuarioBD = new UsuarioDAO( );
        
        boolean existeEmail = existeEmail( prmEmail );
        
        boolean existePassword = existePassword( prmPassword );
        
        if( !existePassword && !existeEmail )
        {
            
            long idInfocuenta = infocuentaBD.insertInfoCuenta( prmIdBanco, prmIdTipoCuenta, prmNumCuenta );
            
            long idInfoVendedor = infoVendedorBD.insertInfoVendedor( (int)idInfocuenta,prmTipoId, prmIdPais ,prmNumeroIdentificacion, prmRegion, prmCelular, prmPaginaWeb, prmTwitter, prmFacebook, prmBiografia );
            
            long idUsuario = usuarioBD.insertUsuarioVendedor( (int)idInfoVendedor, prmEmail, prmPassword, prmLastLogin, prmNombre, prmApellido, prmDireccion, prmTelefono );
            
            return idUsuario;
            
        }
        else 
        {
            return -1;
        }
        
    }
    
    /**
     * 
     * @return
     * @throws DatosException
     */
    public static ArrayList<UsuarioDTO> getUsuarios() throws DatosException
    {
        UsuarioDAO varUsuario = new UsuarioDAO( );
        return varUsuario.getUsuarios( );
    }
    
    /**
     * 
     * @param prmEmail
     * @param prmPassword
     * @return
     * @throws DatosException
     */
    public static ArrayList<UsuarioDTO> getUsuariosEmailPassword( String prmEmail, String prmPassword )throws DatosException
    {
        UsuarioDAO usuarioBD = new UsuarioDAO( );
        
        return usuarioBD.getUsuariosEmailPassword( prmEmail, prmPassword );
    }
    
    /**
     * 
     * @param prmEmail
     * @return
     * @throws DatosException
     */
    public static boolean existeEmail( String prmEmail ) throws DatosException
    {
        UsuarioDAO usuarioBD = new UsuarioDAO( );
        
        return usuarioBD.existeEmail( prmEmail );
    }
    
    /**
     * 
     * @param prmPassword
     * @return
     * @throws DatosException
     */
    public static boolean existePassword( String prmPassword ) throws DatosException
    {
        UsuarioDAO usuarioBD = new UsuarioDAO( );
        
        return usuarioBD.existePassword( prmPassword );
    }
    
    

}
